// import Vue from 'vue'
// import Vuex from 'vuex'
// Vue.use(Vuex)

import { reqCategoryList,reqBannerList, reqFloorList } from '@/api/index'

//home模块配置的vuex仓库
const home = {
    namespaced: true,
    actions: {
        //async函数，任何一个函数被async声明那么该函数的返回值一定是一个promise对象
        /* 
            action函数可以接收一个与store实例具有相同方法的属性context，这个属性中包括下面几部分：
            context:{
                    state,   等同于store.$state，若在模块中则为局部状态
                    rootState,   等同于store.$state,只存在模块中
                    commit,   等同于store.$commit
                    dispatch,   等同于store.$dispatch
                    getters   等同于store.$getters
            }
            用context.commit，但更多的是使用es6的变量解构赋值，也就是直接在参数的 位置写自己想要的属性，如：{commit}。
        */

        async categoryList({ commit }) {
            //await后面一般是跟随一个promise对象，其返回结果是promise对象成功的结果，如果promise失败的只能通过try-catch来捕获错误信息
            let result = await reqCategoryList()
            if (result.code == 200) {
                commit("CATEGORYLIST", result.data)
            }
        },
        //获取banner图的action
        async getBannerList({ commit}) {
            //获取首页数据
            let result = await reqBannerList();
            if (result.code == 200) {
                // console.log('actions发请求')
                commit("GETBANNERLIST", result.data);
            }
        },
        //获取Floor组件的数据
        async getFloorList({ commit }) {
            let result = await reqFloorList();
            console.log(result)
            if (result.code == 200) {
                commit('GETFLOORLIST', result.data);
                // console.log(result.data);
            }
        }
    },
    mutations: {
        CATEGORYLIST(state, categoryList) {
            state.categoryList = categoryList
        },
        GETBANNERLIST(state, bannerList) {
            state.bannerList = bannerList;
            // console.log('mutation修改数据')
        },
        GETFLOORLIST(state,floorList){
            state.floorList = floorList;
        }
    },

    state: {
        //state中数据默认初始值不要瞎写，服务器返回对象还是数组，则初始也一样
        categoryList: [],
        //首页轮播图的数据
        bannerList: [],
        //floor数据
        floorList:[]
    },
    //计算属性
    getters: {},
}

export default home